//导入默认的axios对象
import axios from 'axios'
import { useAuthStore } from '@/stores/auth/userAuthStore'
// import { useRouter} from 'vue-router'
import { ElMessage } from 'element-plus';

// 创建行的axios对象,用于解决ip地址和端口号不便于维护的问题
const request = axios.create({
  baseURL: '/api',
  timeout: 50000,
  headers: {
    'Content-Type': 'application/json; charset=utf-8'
  }
})




// 添加请求拦截器
request.interceptors.request.use(function (config) {
    //1. 从pinia中获取Token数据
    const userStore = useAuthStore()
    //2. 在请求头中添加Token数据
    const token = userStore.token
    if (token) {
      config.headers.authentication = token
    }

  // 在发送请求之前做些什么
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
request.interceptors.response.use(function (response) {
  //解决服务器响应的数据（axios进一步封装导致的）
  return response.data;
}, function (error) {
  // 401失效处理

  if (error.response.status === 401) {
  //1. 清除本地用户数据
  const userStore = useAuthStore();
  userStore.logout(); // 清除状态和 localStorage
  ElMessage.error('登录已失效，请重新登录')
  
  //2. 延迟获取 router 实例
/*   setTimeout(() => {
    const router = useRouter()
    console.log('router',router)
    if (router) {
      router.push('/login')
    }
  }, 0) */
}
  return Promise.reject(error);
});
//把新的request导出
export default request;